  
  
/*  
* Copyright @ 2017 com.iflysse.trains  
* xebest-erp 下午5:58:27  
* All right reserved.  
*  
*/  
  
package com.xebest.web.service;  

import java.util.List;
import java.util.Map;

import com.xebest.web.controller.export.XeVenFinPrepayBillExDTO;
import com.xebest.web.form.XeVenFinPrepayBillForm;
import com.xebest.web.form.XeVenFinPrepayBillQueryForm;
import com.xebest.web.form.XeVenFinPrepayCheckForm;
import com.xebest.web.model.XeVenFinPrepaySettle;
import com.xebest.web.view.ErpUserInfo;
import com.xebest.web.view.SuppliersForPrepayView;
import com.xebest.web.view.XeVenFinPrepayBillPrintView;
import com.xebest.web.view.XeVenFinPrepayBillView;

  
/**  
 * @desc: xebest-erp  
 * @author: 杜春静  
 * @createTime: 2017年12月4日 下午5:58:27  
 * @history:  
 * @version: v1.0    
 */

public interface XeVenFinPrepayBillService {
	/**
	 * 添加预付单
	 * @author: 杜春静  
	 * @createTime: 2017年12月4日 下午6:02:44  
	 * @history:  
	 * @param userInfo
	 * @param prepayBillForm
	 * @return int
	 */
	public int addPrepayBill(ErpUserInfo userInfo,XeVenFinPrepayBillForm prepayBillForm); 
	/**
	 * 编辑预付单
	 * @author: 杜春静  
	 * @createTime: 2017年12月5日 下午3:45:23  
	 * @history:  
	 * @param userInfo
	 * @param prepayBillForm
	 * @return int
	 */
	public int editPrepayBill(ErpUserInfo userInfo,XeVenFinPrepayBillForm prepayBillForm) ;
	/**
	 * 统计预付单的数量
	 * @author: 杜春静  
	 * @createTime: 2017年12月5日 下午4:53:21  
	 * @history:  
	 * @param param
	 * @return int
	 */
	public int countBillByParam(Map<String, Object> param);
	/**
	 * 删除预付单
	 * @author: 杜春静  
	 * @createTime: 2017年12月5日 下午5:20:09  
	 * @history:  
	 * @param userInfo
	 * @param form
	 * @return int
	 */
	public int delPrepayBill(ErpUserInfo userInfo,XeVenFinPrepayCheckForm form);
	/**
	 * 批量或单个审核预付单审核通过
	 * @author: 杜春静  
	 * @createTime: 2017年12月5日 下午5:45:36  
	 * @history:  
	 * @param userInfo
	 * @param form
	 * @return int
	 */
	public int checkPrepayBillPass(ErpUserInfo userInfo,XeVenFinPrepayCheckForm form);
	/**
	 * 批量或单个审核预付单审核不通过
	 * @author: 杜春静  
	 * @createTime: 2017年12月5日 下午6:12:46  
	 * @history:  
	 * @param userInfo
	 * @param form
	 * @return int
	 */
	public int checkPrepayBillRefuse(ErpUserInfo userInfo,XeVenFinPrepayCheckForm form);
	/**
	 * 财务部审核预付单通过
	 * @author: 杜春静  
	 * @createTime: 2017年12月5日 下午6:13:53  
	 * @history:  
	 * @param userInfo
	 * @param form
	 * @return int
	 */
	public int finCheckPrepayBillPass(ErpUserInfo userInfo,XeVenFinPrepayCheckForm form);
	/**
	 * 财务部审核预付单不通过
	 * @author: 杜春静  
	 * @createTime: 2017年12月5日 下午6:14:29  
	 * @history:  
	 * @param userInfo
	 * @param form
	 * @return int
	 */
	public int finCheckPrepayBillRefuse(ErpUserInfo userInfo,XeVenFinPrepayCheckForm form);
	
	/**
	 * 查询预付单列表
	 * @author: 杜春静  
	 * @createTime: 2017年12月6日 下午4:10:49  
	 * @history:  
	 * @param userInfo
	 * @param form
	 * @return List<XeVenFinPrepayBillView>
	 */
	public List<XeVenFinPrepayBillView> queryPrepayBillList(ErpUserInfo userInfo,XeVenFinPrepayBillQueryForm form);
	/**
	 * 查询总的预付款金额和单数
	 * @author: 杜春静  
	 * @createTime: 2017年12月6日 下午4:29:41  
	 * @history:  
	 * @param userInfo
	 * @param form
	 * @return Map<String,Object>
	 */
	public Map<String, Object> queryTotalPrepayAmount(ErpUserInfo userInfo,XeVenFinPrepayBillQueryForm form);
	/**
	 * 财务对预付单进行付款
	 * @author: 杜春静  
	 * @createTime: 2017年12月6日 下午6:30:04  
	 * @history:  
	 * @param userInfo
	 * @param form
	 * @return int
	 */
	public int finPayPrepayBill(ErpUserInfo userInfo,XeVenFinPrepayCheckForm form);
	
	/**
	 * 根据供货商查询预付单可关联的采购单号
	 * @author: 杜春静  
	 * @createTime: 2017年12月8日 上午10:50:46  
	 * @history:  
	 * @param userInfo
	 * @param form
	 * @return List<String>
	 */
	public List<String> querySupplierPurchase(ErpUserInfo userInfo,XeVenFinPrepayBillQueryForm form);
	/**
	 * 查询预付单可以进行付款的供货商信息
	 * @author: 杜春静  
	 * @createTime: 2017年12月8日 上午11:37:07  
	 * @history:  
	 * @return List<SuppliersForPrepayView>
	 */
	public List<SuppliersForPrepayView> querySuppliersForPrepay(ErpUserInfo userInfo,XeVenFinPrepayBillQueryForm form);
	
	/**
	 * 查询预付单打印数据
	 * @author: 杜春静  
	 * @createTime: 2017年12月8日 下午2:22:34  
	 * @history:  
	 * @param userInfo
	 * @param form
	 * @return XeVenFinPrepayBillPrintView
	 */
	public XeVenFinPrepayBillPrintView queryPrepayBill(ErpUserInfo userInfo,XeVenFinPrepayBillQueryForm form);
	/**
	 * 关联结账单和预付单
	 * @author: 杜春静  
	 * @createTime: 2017年12月8日 下午3:36:25  
	 * @history:  
	 * @param spList
	 * @return int
	 */
	public int addRelationSettlePrepay(List<XeVenFinPrepaySettle> spList);
	/**
	 * 解除结账单和预付单的关联关系
	 * @author: 杜春静  
	 * @createTime: 2017年12月8日 下午3:39:44  
	 * @history:  
	 * @param modifyUser
	 * @param satementNos
	 * @return int
	 */
	public int relieveRelationSettlePrepay(String modifyUser,String[] satementNos);
	/**
	 * 查询导出的预付单数据
	 * @author: 杜春静  
	 * @createTime: 2017年12月12日 下午3:00:27  
	 * @history:  
	 * @param userInfo
	 * @param form
	 * @return List<XeVenFinPrepayBillExDTO>
	 */
	public List<XeVenFinPrepayBillExDTO>  exportPrepayList(ErpUserInfo userInfo,XeVenFinPrepayBillQueryForm form);
}
  
